package contracts.program

import org.springframework.cloud.contract.spec.Contract

Contract.make {
    request {
        method 'POST'
        url value('/api/diff/programs')
        headers {
            header('Content-Type', 'application/json;charset=UTF-8')
        }
        body("""
                 {
                    "programId":1,
                    "startTime":"2019-09-12",
                    "endTime":"2019-10-12",
                    "category":"paid",
                    "introduction":"introduction",
                    "studentLink":true,
                    "tutorLink":true,
                    "isReadOnly":true,
                    "isExpired":true,
                    "available":true,
                    "organizationId":1,
                    "operatorId":1,
                    "title":"title",
                    "operation":"UPDATE",
                 } 
                """
        )
        bodyMatchers {
            jsonPath('$.programId', byRegex(number()))
            jsonPath('$.startTime', byRegex("[\\s\\S]+"))
            jsonPath('$.endTime', byRegex("[\\s\\S]+"))
            jsonPath('$.category', byRegex("[\\s\\S]*"))
            jsonPath('$.introduction', byRegex("[\\s\\S]*"))
            jsonPath('$.operatorId', byRegex(number()))
            jsonPath('$.studentLink', byRegex(nonEmpty()))
            jsonPath('$.tutorLink', byRegex(nonEmpty()))
            jsonPath('$.isReadOnly', byRegex(nonEmpty()))
            jsonPath('$.isExpired', byRegex(nonEmpty()))
            jsonPath('$.available', byRegex(nonEmpty()))
            jsonPath('$.organizationId', byRegex(number()))
            jsonPath('$.title', byRegex("[\\s\\S]*"))
            jsonPath('$.operation', byRegex("[\\s\\S]*"))
        }
    }
    response {
        status 201
    }
}
